import {base64ToPath} from "@/libs/image-tools/index.js"
export default {
	// px转换成rpx
	pxTorpx:function(px){
		let deviceWidth = wx.getSystemInfoSync().windowWidth
		let rpx = ( 750 / deviceWidth ) * Number(px)
		return Math.floor(rpx)
	},
	/**
	 * opt  object | string
	 * to_url object | string
	 * 例:
	 * this.Tips('/pages/test/test'); 跳转不提示
	 * this.Tips({title:'提示'},'/pages/test/test'); 提示并跳转
	 * this.Tips({title:'提示'},{tab:1,url:'/pages/index/index'}); 提示并跳转值table上
	 * tab=1 一定时间后跳转至 table上
	 * tab=2 一定时间后跳转至非 table上
	 * tab=3 一定时间后返回上页面
	 * tab=4 关闭所有页面跳转至非table上
	 * tab=5 关闭当前页面跳转至table上
	 */
	Tips: function(opt, to_url) {
		if (typeof opt == 'string') {
			to_url = opt;
			opt = {};
		}
		let title = opt.title || '',
			icon = opt.icon || 'none',
			endtime = opt.endtime || 1000,
			success = opt.success;
		if (title) uni.showToast({
			title: title,
			icon: icon,
			duration: endtime,
			success
		})
		if (to_url != undefined) {
			if (typeof to_url == 'object') {
				let tab = to_url.tab || 1,
					url = to_url.url || '';
				switch (tab) {
					case 1:
						//一定时间后跳转至 table
						setTimeout(function() {
							uni.switchTab({
								url: url
							})
						}, endtime);
						break;
					case 2:
						//跳转至非table页面
						setTimeout(function() {
							uni.navigateTo({
								url: url,
							})
						}, endtime);
						break;
					case 3:
						//返回上页面
						setTimeout(function() {
							// #ifndef H5
							uni.navigateBack({
								delta: parseInt(url),
							})
							// #endif
							// #ifdef H5
							history.back();
							// #endif
						}, endtime);
						break;
					case 4:
						//关闭当前所有页面跳转至非table页面
						setTimeout(function() {
							uni.reLaunch({
								url: url,
							})
						}, endtime);
						break;
					case 5:
						//关闭当前页面跳转至非table页面
						setTimeout(function() {
							uni.redirectTo({
								url: url,
							})
						}, endtime);
						break;
				}
	
			} else if (typeof to_url == 'function') {
				setTimeout(function() {
					to_url && to_url();
				}, endtime);
			} else {
				//没有提示时跳转不延迟
				setTimeout(function() {
					uni.navigateTo({
						url: to_url,
					})
				}, title ? endtime : 0);
			}
		}
	},
	/**
	 * 
	 * 截取 url中的code方法
	 *
	 */
	handleUrlCode: function() {
		var url = location.href; //获取打开的公众号的路径
		var theRequest = new Object();
		if (url.indexOf('?') != -1) {
			var str = url.substr(url.indexOf('?') + 1);
			var strs = str.split('&');
			for (var i = 0; i < strs.length; i++) {
				var items = strs[i].split('=');
				theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
			}
		}
		return theRequest;
	},

	/**
	 * 获取分享海报
	 * @param array arr2 海报素材
	 * @param string store_name 素材文字
	 * @param string price 价格
	 * @param string ot_price 原始价格
	 * @param function successFn 回调函数
	 *
	 *
	 */
	PosterCanvas: function(arr2, store_name, successFn) {
		let that = this;
		const ctx = uni.createCanvasContext('firstCanvas');
		/**
		 * 只能获取合法域名下的图片信息,本地调试无法获取
		 *
		 */
		// console.log('bgimg',arr2[0])
		uni.getImageInfo({
			src: arr2[0],
			success: function(res) {
				// console.log('getImageInfo',res)
				const WIDTH = res.width;
				const HEIGHT = res.height;
				// ctx.clearRect(0, 0, WIDTH, HEIGHT);
				// 绘制一个宽100px，高100px的矩形
				ctx.rect(0, 0, WIDTH, HEIGHT);
				// 设置填充颜色为白色
				ctx.setFillStyle('#ffffff');
				// ctx.drawImage(arr2[0], 0, 0, WIDTH, 1050);
				console.log('arr2[1]',arr2[1])
				ctx.drawImage(arr2[1], 0, 0, WIDTH, WIDTH-71);
				ctx.drawImage(arr2[2], WIDTH-61, 200, 50, 50);
				// ctx.save();
	// 			let r = 110;
	// 			let d = r * 2;
	// 			let cx = 480;
	// 			let cy = 790;
	// 			ctx.arc(cx + r, cy + r, r, 0, 2 * Math.PI);
	// 			// ctx.clip();
	// 			ctx.drawImage(arr2[2], cx, cy, d, d);
	// 			ctx.restore();
	// 			const CONTENT_ROW_LENGTH = 20;
	// 			let [contentLeng, contentArray, contentRows] = that.textByteLength(store_name,
	// 				CONTENT_ROW_LENGTH);
	// 			if (contentRows > 2) {
	// 				contentRows = 2;
	// 				let textArray = contentArray.slice(0, 2);
	// 				textArray[textArray.length - 1] += '……';
	// 				contentArray = textArray;
	// 			}
	// 			ctx.setTextAlign('left');
	// 			ctx.setFontSize(36);
	// 			ctx.setFillStyle('#000');
	// 			// let contentHh = 36 * 1.5;
	// 			let contentHh = 36;
	// 			for (let m = 0; m < contentArray.length; m++) {
	// 				// ctx.fillText(contentArray[m], 50, 1000 + contentHh * m,750);
	// 				if (m) {
	// 					ctx.fillText(contentArray[m], 50, 1000 + contentHh * m + 18, 1100);
	// 				} else {
	// 					ctx.fillText(contentArray[m], 50, 1000 + contentHh * m, 1100);
	// 				}
	// 			}
	// 			ctx.setTextAlign('left')
	// 			ctx.setFontSize(72);
	// 			ctx.setFillStyle('#DA4F2A');
	
	// 			ctx.setTextAlign('left')
	// 			ctx.setFontSize(36);
	// 			ctx.setFillStyle('#999');
	// 			var underline = function(ctx, text, x, y, size, color, thickness, offset) {
	// 				var width = ctx.measureText(text).width;
	// 				switch (ctx.textAlign) {
	// 					case "center":
	// 						x -= (width / 2);
	// 						break;
	// 					case "right":
	// 						x -= width;
	// 						break;
	// 				}	
	// 				y += size + offset;
	
	// 				ctx.beginPath();
	// 				ctx.strokeStyle = color;
	// 				ctx.lineWidth = thickness;
	// 				ctx.moveTo(x, y);
	// 				ctx.lineTo(x + width, y);
	// 				ctx.stroke();
	// 			}
	// 			ctx.setTextAlign('left')
	// 			ctx.setFontSize(28);
	// 			ctx.setFillStyle('#999');
	// 			ctx.fillText('长按或扫描查看', 490, 1030 + contentHh);
				ctx.draw(true, (()=>{
					uni.canvasToTempFilePath({
						canvasId: 'firstCanvas',
						fileType: 'png',
						destWidth: WIDTH,
						destHeight: HEIGHT,
						success: function(res) {
							// uni.hideLoading();
							// console.log('222res',res)
							base64ToPath(res.tempFilePath).then(ress=>{
								successFn && successFn(ress);
							}).catch(err=>{
								console.log('err',err)
							})
							
						},
						fail:function(res){
							console.log('333res',res)
						}
					})
				})());				
			},
			fail: function(err) {
				console.log('失败', err)
				uni.hideLoading();
				that.Tips({
					title: '无法获取图片信息'
				});
			}
		})
	},
	/**
	 * 生成海报获取文字
	 * @param string text 为传入的文本
	 * @param int num 为单行显示的字节长度
	 * @return array
	 */
	textByteLength: function(text, num) {
		let strLength = 0;
		let rows = 1;
		let str = 0;
		let arr = [];
		for (let j = 0; j < text.length; j++) {
			if (text.charCodeAt(j) > 255) {
				strLength += 2;
				if (strLength > rows * num) {
					strLength++;
					arr.push(text.slice(str, j));
					str = j;
					rows++;
				}
			} else {
				strLength++;
				if (strLength > rows * num) {
					arr.push(text.slice(str, j));
					str = j;
					rows++;
				}
			}
		}
		arr.push(text.slice(str, text.length));
		return [strLength, arr, rows] //  [处理文字的总字节长度，每行显示内容的数组，行数]
	},
}